﻿#ifndef _DB_IGEOMETRYFIELD_H
#define _DB_IGEOMETRYFIELD_H

#include "udatabase/interface/ifield.h"
#include "geometry/interface/igeometry.h"
#include "udatabase/dll_cfg.h"

namespace FD
{
	namespace Utility
	{
		namespace DB
		{
			namespace Interface
			{
			/// <summary>
			/// 几何体字段接口，继承于字段接口
			/// </summary>
			class FD_DB_Export IGeometryField : public FD::Utility::DB::Interface::IField
			{
			public:
				/// <summary>
				/// 默认析构函数
				/// </summary>
				virtual ~IGeometryField();
			public:
				/// <summary>
				/// 获取几何体类型
				/// </summary>
				/// <returns>几何体类型枚举</returns>
				virtual FD::Kernel::Geometry::Interface::GeometryType getGeometryType() const;
				/// <summary>
				/// 设置几何体类型
				/// </summary>
				/// <param name="type">几何体类型枚举</param>
				/// <returns></returns>
				virtual void setGeometryType(FD::Kernel::Geometry::Interface::GeometryType type);
				/// <summary>
				/// 获取空间坐标参考
				/// </summary>
				/// <returns>空间坐标参考</returns>
				virtual const FD::Kernel::Math::SpatialReference* getSpatialReference() const;
				/// <summary>
				/// 设置空间坐标参考
				/// </summary>
				/// <param name="sr">空间坐标参考</param>
				/// <returns></returns>
				virtual void setSpatialReference(const FD::Kernel::Math::SpatialReference* ref_sr);

			protected:
				/// <summary>
				/// 默认构造函数
				/// </summary>
				IGeometryField();
			private:
				/// <summary>
				/// 拷贝构造函数
				/// </summary>
				C_DISABLE_COPY(IGeometryField);
			};
		}
	}
	}
}

#endif
